Skip to content

main: wire node_exporter through reusable config and runtime#3663

Draft
nicolastakashi wants to merge 3 commits into
prometheus:masterfrom
nicolastakashi:embeddable-cli-runtime-wiring
Draft

main: wire node_exporter through reusable config and runtime#3663
nicolastakashi wants to merge 3 commits into
prometheus:masterfrom
nicolastakashi:embeddable-cli-runtime-wiring

Conversation

@nicolastakashi
Copy link
Copy Markdown

@nicolastakashi nicolastakashi commented May 19, 2026

Summary

This continues the incremental refactor to make node_exporter easier to embed outside the standalone binary.
The broader goal is to support ongoing work to make Prometheus exporters embeddable inside the Prometheus OpenTelemetry Collector distribution as native receivers, without requiring each exporter to be rewritten as an OpenTelemetry component.
This PR builds on the previous config and runtime foundation PRs by refactoring node_exporter's main package to consume those reusable APIs instead of constructing everything inline.
Specifically, this PR:

  • builds a reusable config.Config from CLI flags
  • validates config before startup
  • constructs collector.NewRuntime(cfg, logger) from the binary entrypoint
  • uses runtime.Registry() when building the metrics handler
  • derives filtered handler runtimes from the base config instead of rebuilding from fresh defaults
  • reuses config package defaults in the CLI flag definitions

Why

The goal of this change is to make the binary entrypoint a thinner adapter over reusable exporter APIs.
Before this change, node_exporter.go directly handled top-level configuration shaping and collector/registry construction. After this change, the binary is more clearly separated into:

  • binary concerns such as flags, HTTP serving, and process setup
  • reusable exporter concerns such as config validation, runtime construction, and registry assembly
    This is still not the full embeddability refactor. Collector-specific process-global configuration and runtime state remain follow-up work. The intent of this PR is to move the standalone binary onto the reusable foundation introduced in the earlier PRs.

Stack

This PR is part of a stacked series:

The earlier PRs introduce the reusable config and runtime layers. This PR applies those layers to the existing binary wiring.

Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
Signed-off-by: Nicolas Takashi <nicolas.tcs@hotmail.com>
@nicolastakashi
Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant